package com.holly.unit.deform.api;

import com.holly.unit.db.api.pojo.druid.DruidProperties;
import com.holly.unit.db.api.pojo.page.PageResult;
import com.holly.unit.deform.api.pojo.component.DeformDeptTreeDTO;
import com.holly.unit.deform.api.pojo.component.DeformDictDTO;
import com.holly.unit.deform.api.pojo.component.DeformUserDTO;
import com.holly.unit.dict.modular.pojo.request.DictRequest;
import com.holly.unit.system.api.pojo.user.request.SysUserRequest;

import java.util.List;
import java.util.Map;

/**
 * 类描述: 表单组件扩展API
 *
 * @author fxr
 * @version 1.0.0
 * @date 2022/4/15 15:24
 */
public interface DeformComponentApi {


    /***
     * 根据TOKEN获取用户的部分信息（返回的数据是可供表单设计器使用的数据）
     * @param token
     * @return [sysUserId, sysUserCode, sysUserName, sysOrgCode] 当前登录账号,用户真实姓名,用户部门编号
     */
    Map<String, Object> fetchUserSectionInfoByToken(String token);

    /***
     * 分页获取系统用户
     */
    PageResult<DeformUserDTO> fetchPageSysUsers(SysUserRequest sysUserRequest);

    /***
     * 分页查询字典列表
     * @return
     */
    PageResult<DeformDictDTO> fetchPageDict(DictRequest dictRequest);

    /***
     * 查询数据 查出所有部门,并以树结构数据格式响应给前端
     */
    List<DeformDeptTreeDTO> fetchTreeList();

    /***
     * 查询所有的数据表（返回的数据是可供表单设计器使用的数据）
     * @param token 该用户查询的数据范围【扩展信息目前没有实际用途】
     * @param druidProperties 数据源配置信息
     * @return [sysUserId, sysUserCode, sysUserName, sysOrgCode] 当前登录账号,用户真实姓名,用户部门编号
     */
    Map<String, Object> fetchDbTableListInfo(String token, DruidProperties druidProperties);

    /***
     * 根据表名获取表中所有的字段
     * @param token 该用户查询的数据范围【扩展信息目前没有实际用途】
     * @param druidProperties 数据源配置
     * @param tableName 表名
     * @return
     */
    Map<String, Object> fetchDbTableColListInfo(String token, DruidProperties druidProperties, String tableName);


    PageResult<Map> getTableDataByColumn(Integer pageNum,Integer pageSize,String tableName, List<String> columnList);


}
